package org.example.t5teste.hibernates;

// Generated 17/01/2009 14:10:33 by Hibernate Tools 3.2.2.GA

import java.util.List;

import org.example.t5teste.entities.Usuarios;
import org.example.t5teste.tools.Util;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 * Home object for domain model class Usuarios.
 * @see org.example.t5teste.entities.Usuarios
 * @author Hibernate Tools
 */
public class UsuariosHome {

	private final Session session;

	public UsuariosHome(Session session){
		this.session = session;
	}

	public void persist(Usuarios transientInstance) {
		try {
			session.persist(transientInstance);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	public void attachDirty(Usuarios instance) {
		try {
			session.saveOrUpdate(instance);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	public void attachClean(Usuarios instance) {
		try {
			session.lock(instance, LockMode.NONE);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	public void delete(Usuarios persistentInstance) {
		try {
			session.delete(persistentInstance);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	public Usuarios merge(Usuarios detachedInstance) {
		try {
			return (Usuarios) session.merge(detachedInstance);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	public Usuarios findById(int id) {
		try {
			Usuarios instance = (Usuarios) session.get(Usuarios.class, id);
			if (instance == null) {

			} else {

			}
			return instance;
		} catch (RuntimeException re) {
			throw re;
		}
	}

//	@SuppressWarnings("unchecked")
//	public List<Usuarios> findByExample(Usuarios instance) {
//		try {
//			List<Usuarios> results = (List<Usuarios>) session.createCriteria(
//							Usuarios.class).add(create(instance)).list();
//			return results;
//		} catch (RuntimeException re) {
//			throw re;
//		}
//	}
	
	public Usuarios getByUsuario(String usuario){
		try {
			return (Usuarios) session.createCriteria(Usuarios.class)
			.add(Restrictions.eq("usuario", usuario)).uniqueResult();
		} catch (RuntimeException re) {
			throw re;
		}
	}
	
	public Usuarios isValidar(String usuario, String senha){
		try {
			return (Usuarios) session.createCriteria(Usuarios.class)
				.add(Restrictions.eq("usuario", usuario))
				.add(Restrictions.eq("senha", senha))
				.uniqueResult();
		} catch (RuntimeException re) {
			throw re;
		}
	}
	
	@SuppressWarnings("unchecked")
	public List<Usuarios> getLista(String procurar) {
		try {
			Criteria c = session.createCriteria(Usuarios.class);
			if(!Util.isNullOrEmpty(procurar)){
				c.add(Restrictions.eq("usuario", procurar));
			}
			c.addOrder(Order.asc("usuario"));
			return c.list();
		} catch (RuntimeException re) {
			throw re;
		}
	}
}
